package com.example.day05.homework;

import java.util.Scanner;

public class FindCommonMaxStr {

    public static void main(String[] args) {


        Scanner scanner=new Scanner(System.in);

        System.out.println("请输入两个字符串：");

        String str1=scanner.nextLine();
        String str2=scanner.nextLine();

       String result= findCommonStr(str1,str2);
        System.out.println("字符串："+str1+"和"+str2+"的最大公共子串是：\n"+result);
    }

    //查找两个字符串中的最大公共子串
    public static String findCommonStr(String str1, String str2) {

        String maxlen=str1.length()>=str2.length()?str1:str2;
        String minlen=str1.length()>=str2.length()?str2:str1;
        String str="";

        outer:
       for(int i=0;i<minlen.length();i++){
            for(int j=0;j<=i;j++){
                String  substring=minlen.substring(j,minlen.length()-i+j);   //先判断最小的字符串整个是否在长的子串，不在的依次减少 字符串长度判断
                if(maxlen.contains(substring)){ //判断截取的字符串是否在长的字符串中
                    //直到上面截取到了最大的公共子串才会进入到这里
                    if(str.length()<substring.length()){
                        str=substring;        //也可以继续运行只不过 后面的子串都比最大公共子串小或者相等，所以找到最大子串直接跳出外面的循环
                        break outer;
                    }
                }
            }
        }
       return  str;
    }
}
